3.6.7.7l2bmr2<rrn_opcode>-L1BM→L2BM結合縮約
各L2BMについて、配下のL1BMから 16 長語/サイクルで連続領域を読み、L1Bを先頭から 2 つずつ 4
グループに分けてグループ内では指定した演算で縮約、グループ間では結合を行い、L2BMに 64 長語/サイ
クルで書き込む。
第3.6.7.3節で述べたL2BM→L1BM分配放送と対になっている。
文法
l2bmr2<rrn_opcode> $lb<addr_b> $lc<addr_c>
<rrn_opcode>は第3.5.5節で定めた縮約演算指定である。
結合縮約ではない通常の縮約(第3.6.7.6節)とは異なり、読み出し元L1B集合を指定することはできない。
読み出しアドレス<addr_b>は 16 長語アライン、書き込みアドレス<addr_c>は 64 長語アラインである必
要がある。
code:txt
効果
for cycle= 0:4
forall group,l2b
uint_t src_addr=addr_b +cycle* 16
uint_t dst_addr=addr_c +cycle* 64
LongWord buf64
buf: =get_unit_value(rrn_opcode)
forall l1b
uint_t data_addr = 16 * (l1b / 2)
bufdata_addr:data_addr+16 =rrn_opcode(bufdata_addr:data_addr+16,MEMgroup[
l2b]l1b.l1bmsrc_addr:src_addr+16)
MEMgroupl2b.l2bmdst_addr:dst_addr+64 = buf0:64
code:txt
注意:縮約を内部的に実際にこの手順で行っているわけではない。
code:txt
例
l2bmr2dfadd $lb0 $lc0
L1BMからそれぞれ 64 長語を読み出し、倍精度浮動小数点数と解釈してグループ内で加算し、グループ間
では結合して計 256 長語をL2BMに書き込む。